/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import java.util.Date;
import java.util.Random;
import persistencia.*;


/**
 *
 * @author JAVA
 */
public class Invitacion {
    //private int id;

    private String codigo; // máx 25 caracteres
    private Date fechaEnvio; // Fecha del sistema
    private Date fechaAceptacion; // máx 30 días
    private Usuario usuarioEmisor;
    private String usuarioReceptorEmail; // Email
    private Usuario usuarioAceptador;

    public Invitacion() {
        this.codigo = generaCodigo();

        long lAhora = System.currentTimeMillis();
        Date d = new Date(lAhora);
        d.getTime();
        this.fechaEnvio = d;
    }

    public Invitacion(Usuario usuarioEmisor, String usuarioReceptorEmail) {
        this.codigo = generaCodigo();

        long lAhora = System.currentTimeMillis();
        Date d = new Date(lAhora);
        d.getTime();
        this.fechaEnvio = d;
 
        this.usuarioEmisor = usuarioEmisor;
        this.usuarioReceptorEmail = usuarioReceptorEmail;
    }

    private String generaCodigo() {
        String codigoGenerado = "";
        codigoGenerado = getCadenaAlfanumAleatoria(25);
        return codigoGenerado;
    }

    private String getCadenaAlfanumAleatoria(int longitud) {
        String cadenaAleatoria = "";
        long milis = new java.util.GregorianCalendar().getTimeInMillis();
        Random r = new Random(milis);
        int i = 0;
        while (i < longitud) {
            char c = (char) r.nextInt(255);
            if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z')) {
                cadenaAleatoria += c;
                i++;
            }
        }
        return cadenaAleatoria;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public Date getFechaAceptacion() {
        return fechaAceptacion;
    }

    public void setFechaAceptacion(Date fechaAceptacion) {
        this.fechaAceptacion = fechaAceptacion;
    }

    public Date getFechaEnvio() {
        return fechaEnvio;
    }

    public void setFechaEnvio(Date fechaEnvio) {
        this.fechaEnvio = fechaEnvio;
    }

    public Usuario getUsuarioAceptador() {
        return usuarioAceptador;
    }

    public void setUsuarioAceptador(Usuario usuarioAceptador) {
        this.usuarioAceptador = usuarioAceptador;
    }

    public Usuario getUsuarioEmisor() {
        return usuarioEmisor;
    }

    public void setUsuarioEmisor(Usuario usuarioEmisor) {
        this.usuarioEmisor = usuarioEmisor;
    }

    public String getUsuarioReceptorEmail() {
        return usuarioReceptorEmail;
    }

    public void setUsuarioReceptorEmail(String usuarioReceptorEmail) {
        this.usuarioReceptorEmail = usuarioReceptorEmail;
    }
    
    //comprobar this
    //public static void AltaInvitacion(Invitacion inv) {
    //    PersistenciaInvitacion.registrarUnaInvitacion(inv);
    //}
}
